home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 26 / AACD 26.iso / AACD / Online / Qpopper / pop_dele.c < prev    next >
Encoding:
C/C++ Source or Header  |  1996-02-01  |  1.8 KB  |  62 lines

  1. /*
  2.  * Copyright (c) 1989 Regents of the University of California.
  3.  * All rights reserved.  The Berkeley software License Agreement
  4.  * specifies the terms and conditions for redistribution.
  5.  */
  6.  
  7. #ifndef lint
  8. static char copyright[] = "Copyright (c) 1990 Regents of the University of California.\nAll rights reserved.\n";
  9. static char SccsId[] = "@(#)@(#)pop_dele.c    2.1  2.1 3/18/91";
  10. #endif
  11.  
  12. #include <stdio.h>
  13. #include <sys/types.h>
  14. #include <ctype.h>
  15. #include "popper.h"
  16.  
  17. /* 
  18.  *  dele:   Delete a message from the POP maildrop
  19.  */
  20. pop_dele (p)
  21. POP     *   p;
  22. {
  23.     MsgInfoList     *   mp;         /*  Pointer to message info list */
  24.     int                 msg_num;
  25.  
  26.     /*  Convert the message number parameter to an integer */
  27.     msg_num = atoi(p->pop_parm[1]);
  28.  
  29.     /*  Is requested message out of range? */
  30.     if ((msg_num < 1) || (msg_num > p->msg_count))
  31.         return (pop_msg (p,POP_FAILURE,"Message %d does not exist.",msg_num));
  32.  
  33.     /*  Get a pointer to the message in the message list */
  34.     mp = &(p->mlp[msg_num-1]);
  35.  
  36.     /*  Is the message already flagged for deletion? */
  37.     if (mp->del_flag)
  38.         return (pop_msg (p,POP_FAILURE,"Message %d has already been deleted.",
  39.             msg_num));
  40.  
  41.     /*  Flag the message for deletion */
  42.     mp->del_flag = TRUE;
  43.  
  44. #ifdef DEBUG
  45.     if(p->debug)
  46.         pop_log(p,POP_DEBUG,"Deleting message %u at offset %u of length %u",
  47.             mp->number,mp->offset,mp->length);
  48. #endif
  49.  
  50.     /*  Update the messages_deleted and bytes_deleted counters */
  51.     p->msgs_deleted++;
  52.     p->bytes_deleted += mp->length;
  53.  
  54.     p->dirty = 1;
  55.  
  56.     /*  Update the last-message-accessed number if it is lower than 
  57.         the deleted message */
  58.     if (p->last_msg < msg_num) p->last_msg = msg_num;
  59.  
  60.     return (pop_msg (p,POP_SUCCESS,"Message %d has been deleted.",msg_num));
  61. }
  62.